
#分而治之

demo_list = [3,3,9,6,7,10,7,6]  #8个数

result = 0
for i in demo_list:
    result^=i

#最终结果
# 0000 1001  9
# 0000 1010  10
# 0000 0011  3
print(result)

# 1&9 真
# 1&10 假的

#拿一个数，和其负数进行按位与，就可以得到最低位的值
solit_flag = result & -result
print(solit_flag)

result1 = 0
result2 = 0
#分堆，分成两堆
for i in demo_list:
    if i&solit_flag:
        # print(f'堆1 {i}')
        result1^=i
    else:
        # print(f'堆2 {i}')
        result2^=i

print(f'出现一次的两个数分别是{result1},{result2}')




